home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PCMania 64
/
PCMania CD64_1.iso
/
pcmania
/
demo64
/
fire.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1997-12-21
|
3KB
|
103 lines
{ HEY! PcManíacos: }
{ Si queréis contactar con los autores de esta sección, }
{ ahora podéis hacerlo a través de sus e-mails privados: }
{ Miquel Barceló: (Demoscene) }
{ e-mail: sa281@blues.uab.es }
{ Eduard Sánchez Palazón (Curso de ficheros musicales/Demoscene) }
{ e-mail: eduard@ergos.es }
{ Esperamos vuestros mensajes! }
{ -------------------------------------------------------------- }
{ Efectos Recursivos / fire.pas }
{ Por Miquel Barceló }
{ -------------------------------------------------------------- }
uses crt,graf;
procedure Prepara_Paleta;
var
cont : integer;
r,g,b : byte;
begin
for cont:=0 to 119 do begin
putrgb(cont,50*cont div 119,0,0);
end;
for cont:=120 to 219 do begin
putrgb(cont,50+(cont-120)*13 div 99,(cont-120)*63 div 99,0);
end;
for cont:=220 to 255 do begin
putrgb(cont,63,63,(cont-220)*63 div 35);
end;
end;
procedure bloque(segment,offset:word;col:byte);
begin
mem[segment:offset]:=col;
mem[segment:offset+1]:=col;
mem[segment:offset+2]:=col;
mem[segment:offset+3]:=col;
mem[segment:offset+4]:=col;
mem[segment:offset+320]:=col;
mem[segment:offset+321]:=col;
mem[segment:offset+322]:=col;
mem[segment:offset+323]:=col;
mem[segment:offset+324]:=col;
end;
procedure Modifica_Resultado (donde: pointer; num_bloques : integer);
var
cont : integer;
segment,offset : word;
begin
segment:=seg(donde^);
offset :=ofs(donde^);
for cont:=0 to num_bloques do
bloque (segment,offset+62721+random(312),230+random(25));
end;
procedure Fuego (donde: pointer);
var
cont : word;
segment,offset : word;
temp : byte;
begin
segment:=seg(donde^);
offset :=ofs(donde^);
for cont:=offset to offset+63360 do
begin
temp:=(mem[segment:cont]+
mem[segment:cont+319]+
mem[segment:cont+321]+
mem[segment:cont+640])shr 2;
if temp<>0 then temp:=temp-1;
mem[segment:cont]:=temp;
end;
end;
var
pant :pointer;
c :integer;
begin
getmem(pant,64000);
cls(0,pant^);
Set_Vga;
Prepara_Paleta;
repeat
Modifica_Resultado (pant,40);
Fuego(pant);
flip(pant^,vga^);
until keypressed;
for c:=40 downto 0 do begin
Modifica_Resultado (pant,c);
Fuego(pant);
flip(pant^,vga^);
end;
Set_Text;
freemem(pant,64000);
end.